在 TypeScript 中, 箭头函数是一种简洁的函数声明方式, 与传统的函数声明有一些重要区别。以下是箭头函数的使用要点, 以及它们与传统函数的区别和适用场景:

箭头函数的主要特点:

  1. 简洁的语法 箭头函数使用 => 符号, 可以省略 function 关键字[1][2]:
const add = (a: number, b: number): number => {
  return a + b;
};
  1. 隐式返回 如果函数体只有一个表达式, 可以省略 return 和花括号[2]:
const add = (a: number, b: number): number => a + b;
  1. 词法作用域的 this 绑定 箭头函数不会创建自己的 this 上下文, 而是继承外围作用域的 this [5]。

与传统函数的主要区别:

  1. this 绑定 传统函数的 this 取决于调用方式, 而箭头函数的 this 是词法作用域[5]。

  2. 构造函数 箭头函数不能用作构造函数, 不能使用 new 关键字[5]。

  3. 原型方法 箭头函数不会出现在对象的原型链上[4]。

  4. 参数对象 箭头函数没有自己的 arguments 对象[5]。

适用场景:

箭头函数适合用于:

  1. 简短的函数表达式, 特别是回调函数[1][2]:
let numbers = [1, 2, 3];
let doubled = numbers.map(n => n * 2);
  1. 需要保持外部 this 上下文的场景, 如事件处理器[4]:
class Handler {
  info: string;
  onCall = () => {
    console.log(this.info);
  }
}

传统函数适合用于:

  1. 对象方法, 特别是需要动态 this 绑定的情况[5]。
  2. 构造函数[5]。
  3. 需要使用 arguments 对象或 super 关键字的函数[5]。
  4. 生成器函数[5]。

总之, 箭头函数提供了一种简洁的语法和词法作用域的 this 绑定, 适合用于简短的函数表达式和需要保持外部上下文的场景。而传统函数则更适合用于需要动态 this 绑定、构造函数等场景。选择使用哪种函数形式应该根据具体的使用场景和需求来决定。

Citations: [1] https://www.geeksforgeeks.org/how-to-declare-use-arrow-functions-in-typescript/ [2] https://www.scaler.com/topics/typescript/typescript-arrow-function/ [3] https://www.tutorialsteacher.com/typescript/arrow-function [4] https://stackoverflow.com/questions/45881670/should-i-write-methods-as-arrow-functions-in-angulars-class/45882417 [5] https://www.freecodecamp.org/news/when-and-why-you-should-use-es6-arrow-functions-and-when-you-shouldnt-3d851d7f0b26/